/**
 * @discript 给定一个已排序的整数数组和一个目标值，在数组中查找该目标值，如果找到则返回其索引，否则返回-1。
 *
 * @param {Array} arr
 * @param {Number} target
 * @returns
 */

function binarySearch(arr, target) {
  let left = 0; //开始时索引
  let right = arr.length - 1; // 最大索引 4

  // 缩小到范围内只有一个元素
  while (left <= right) {
    // 中间索引--floor()  向下取整
    let mid = Math.floor((left + right) / 2);
    let guess = arr[mid];
    // 如果找到了目标值
    if (guess === target) {
      return mid;
    }

    // 如果目标值大
    if (guess < target) {
      // 修改最小查询索引
      left = mid + 1;
    }
    // 如果目标值 小
    else {
      right = mid - 1;
    }
  }

  // 如果没有找到目标值
  return -1;
}

// 示例用法
const sortedArray = [1, 3, 5, 7, 9, 10, 12, 15, 66, 88];
const targetValue = 5;
const index = binarySearch(sortedArray, targetValue);
console.log(index); // 输出: 2

const missingValue = 6;
const missingIndex = binarySearch(sortedArray, missingValue);
console.log(missingIndex); // 输出: -1
